package persistencia;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import util.Conexion;
import bean.Periodos;

public class PeriodosDAO {
	
	public Periodos obtenerPeriodo(Periodos periodos) throws SQLException{
		Conexion.obtenerConexionMSQL().setAutoCommit(false);
		PreparedStatement pstm = Conexion.obtenerConexionMSQL().prepareStatement(
				"SET TRANSACTION ISOLATION LEVEL  SERIALIZABLE "+
				 "begin tran "+
				"select flag,usuario from tbl_periodos with (XLOCK) where ejercicio=? and periodo=? and tipo_informacion=?");
		pstm.setInt(1, periodos.getEjercicio());
		pstm.setString(2, periodos.getPeriodo());
		pstm.setString(3, periodos.getTipo_informacion());
		ResultSet rs = pstm.executeQuery();
		Periodos periodo = null;
		while(rs.next()){
			periodo = new Periodos();
			periodo.setFlag(rs.getInt("flag"));
			periodo.setUsuario(rs.getString("usuario"));
		}
		rs.close();
		pstm.close();
		return periodo;
	}
	
	public int insertar(Periodos periodos) throws SQLException{
		PreparedStatement pstm = Conexion.obtenerConexionMSQL().prepareStatement(
				"insert into tbl_periodos(ejercicio,periodo,tipo_informacion,flag,usuario) values (?,?,?,?,?)");
		pstm.setInt(1, periodos.getEjercicio());
		pstm.setString(2, periodos.getPeriodo());
		pstm.setString(3, periodos.getTipo_informacion());
		pstm.setInt(4, periodos.getFlag());
		pstm.setString(5, periodos.getUsuario());
		int resultado = pstm.executeUpdate();
		pstm.close();
		return resultado;
	}
	
	public int actualizar(Periodos periodos)throws SQLException{
		PreparedStatement pstm = Conexion.obtenerConexionMSQL().prepareStatement(
				"update tbl_periodos set flag=?,usuario=? where ejercicio=? and periodo=? and tipo_informacion=?");
		pstm.setInt(1, periodos.getFlag());
		pstm.setString(2, periodos.getUsuario());
		pstm.setInt(3, periodos.getEjercicio());
		pstm.setString(4, periodos.getPeriodo());
		pstm.setString(5, periodos.getTipo_informacion());
		int resultado = pstm.executeUpdate();
		pstm.close();
		return resultado;
	}

}